/**
 * JSparrow - Une version numérique du jeu "Attention Pirates !" - Copyright (C) 2014 Black Pearl
 *
 * This program is free software: you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program. If
 * not, see <http://www.gnu.org/licenses/>.
 */
package App.Vue;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JComponent;

import App.Controleur.Jeu;

public class Panneau_CreationPartie extends JPanel_Principal{

	private Panneau_ParametragePartie parametre;
	private Fenetre_Principale fenetre;
	private Panneau_NouveauJoueur joueur;
	private Image table;
	private boolean flagInit = true;
	private int nbJoueurMax;
	private int nbJoueur;

	public Panneau_CreationPartie(Fenetre_Principale fenetre){
		this.fenetre = fenetre;
		Rectangle screenBounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
		this.setPreferredSize(new Dimension(screenBounds.width, screenBounds.height));

		joueur = new Panneau_NouveauJoueur(this);
		parametre = new Panneau_ParametragePartie(this);
		joueur.setVisible(false);
		this.setLayout(new GridBagLayout());
		this.addItem(parametre,0,0);
		this.addItem(joueur,0,0);

	}

	private void addItem(JComponent c, int x, int y) {
		GridBagConstraints gc = new GridBagConstraints();
		gc.gridx = x;
		gc.gridy = y;
		gc.gridwidth = 1;
		gc.gridheight = 1;
		gc.weightx = 1;
		gc.weighty = 1;
		gc.insets = new Insets(2,2,2,2);
		gc.anchor = GridBagConstraints.CENTER;
		gc.fill = GridBagConstraints.NONE;
		this.add(c, gc);
	}

	public void paintComponent(Graphics g){
		super.paintComponent(g);
		if(flagInit){
			Rectangle screenBounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
			try {
				BufferedImage bufferedFond = ImageIO.read(this.getClass().getClassLoader().getResourceAsStream("img/backgroundTable.jpg"));
				table = bufferedFond.getScaledInstance(screenBounds.width,screenBounds.height, 0);

			} catch (IOException e) {
				e.printStackTrace();
			}
			flagInit = false;
		}
		g.drawImage(table, 0, 0, this);
	}

	public void validerCreerPartie(String nomPartie, int nbJoueur){
		this.nbJoueurMax = nbJoueur;
		this.nbJoueur = 0;
		fenetre.creerPartie(nomPartie,nbJoueur);	
		parametre.setVisible(false);
		joueur.champNomJoueur.setText("");
		parametre.champNomPartie.setText("");
		joueur.setVisible(true);
	}

	public void retourMenu(){
		fenetre.afficherMenu();
	}

	public void retourJoueur(){

		if(nbJoueur == 0){
			joueur.setVisible(false);
			parametre.setVisible(true);
		}
		else{
			//nbJoueur--;
			joueur.champNomJoueur.setText("");
		}
	}

	public void validerJoueur(String nom){

		nbJoueur++;
		joueur.champNomJoueur.setText("");
		fenetre.ajouterJoueur(nom);
		if(nbJoueur >= nbJoueurMax){
			//TODO: initialiser jeu
			//fenetre.afficherMenu();
			fenetre.initialiserJeu(nbJoueurMax);
		}
	}
}

